package traveldream.ejb.converters;

import java.util.ArrayList;
import java.util.List;

import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

import travelDream.ejb.DTOs.EscursioneDTO;
import travelDream.ejb.DTOs.HotelDTO;
import travelDream.ejb.DTOs.VoloDTO;
import traveldream.ejb.entities.Escursione;
import traveldream.ejb.entities.Hotel;
import traveldream.ejb.entities.Volo;


@Stateless
public class ProdottoBaseConverter {

	@PersistenceContext
	private EntityManager em;
	
	//default
	public ProdottoBaseConverter() {
	}

	//recupera il Volo corrispondente al VoloDTO (per creare un nuovo Volo si usa il costruttore, non questo metodo)
	public Volo voloDTOtoEntity(VoloDTO volo){
		return em.find(Volo.class, volo.getVoloId());
	}
			
	//recupera l'Hotel corrispondente al HotelDTO (per creare un nuovo Hotel si usa il costruttore, non questo metodo)
	public Hotel hotelDTOtoEntity(HotelDTO hotel){
		return em.find(Hotel.class, hotel.getHotelId());
	}
	
	//recupera l'Escursione corrispondente alla EscursioneDTO (per creare una nuova Escursione si usa il costruttore, non questo metodo)
	public Escursione escursioneDTOtoEntity(EscursioneDTO escursione){
		return em.find(Escursione.class, escursione.getEscursioneId());
	}
	
	//crea lista di Escursione a partire da EscursioneDTO (utilizzato da entities come Pacchetto)
	public List<Escursione> listEscurDTOtoEntity (List<EscursioneDTO> listaEscursione) {
		List<Escursione> tmp = new ArrayList<Escursione>();
		for(EscursioneDTO escursione : listaEscursione)
			tmp.add(escursioneDTOtoEntity(escursione));
		return tmp;
	}
		
	//crea lista di EscursioneDTO a partire da Escursione  (utilizzato dalla parte grafica)
	public List<EscursioneDTO> listEscurEntityToDTO (List<Escursione> listaEscursione) {
		List<EscursioneDTO> tmp = new ArrayList<EscursioneDTO>();
		for(Escursione escursione : listaEscursione)
			tmp.add(escursione.entityToDTO());
		return tmp;
	}
			
	//crea lista di Hotel a partire da HotelDTO (utilizzato da entities come Pacchetto)
	public List<Hotel> listHotelDTOtoEntity (List<HotelDTO> listaHotel) {
		List<Hotel> tmp = new ArrayList<Hotel>();
		for(HotelDTO hotel : listaHotel)
			tmp.add(hotelDTOtoEntity(hotel));
		return tmp;
	}
			
	//crea lista di HotelDTO a partire da Hotel  (utilizzato dalla parte grafica)
	public List<HotelDTO> listHotelEntityToDTO (List<Hotel> listaHotel) {
		List<HotelDTO> tmp = new ArrayList<HotelDTO>();
		for(Hotel hotel : listaHotel)
			tmp.add(hotel.entityToDTO());
		return tmp;
	}
	
}
